package com.siyuanren.gcocp.entity;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class WxUserOrderExample {
    protected String orderByClause;

    protected boolean distinct;

    protected List<Criteria> oredCriteria;

    public WxUserOrderExample() {
        oredCriteria = new ArrayList<Criteria>();
    }

    public void setOrderByClause(String orderByClause) {
        this.orderByClause = orderByClause;
    }

    public String getOrderByClause() {
        return orderByClause;
    }

    public void setDistinct(boolean distinct) {
        this.distinct = distinct;
    }

    public boolean isDistinct() {
        return distinct;
    }

    public List<Criteria> getOredCriteria() {
        return oredCriteria;
    }

    public void or(Criteria criteria) {
        oredCriteria.add(criteria);
    }

    public Criteria or() {
        Criteria criteria = createCriteriaInternal();
        oredCriteria.add(criteria);
        return criteria;
    }

    public Criteria createCriteria() {
        Criteria criteria = createCriteriaInternal();
        if (oredCriteria.size() == 0) {
            oredCriteria.add(criteria);
        }
        return criteria;
    }

    protected Criteria createCriteriaInternal() {
        Criteria criteria = new Criteria();
        return criteria;
    }

    public void clear() {
        oredCriteria.clear();
        orderByClause = null;
        distinct = false;
    }

    protected abstract static class GeneratedCriteria {
        protected List<Criterion> criteria;

        protected GeneratedCriteria() {
            super();
            criteria = new ArrayList<Criterion>();
        }

        public boolean isValid() {
            return criteria.size() > 0;
        }

        public List<Criterion> getAllCriteria() {
            return criteria;
        }

        public List<Criterion> getCriteria() {
            return criteria;
        }

        protected void addCriterion(String condition) {
            if (condition == null) {
                throw new RuntimeException("Value for condition cannot be null");
            }
            criteria.add(new Criterion(condition));
        }

        protected void addCriterion(String condition, Object value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value));
        }

        protected void addCriterion(String condition, Object value1, Object value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value1, value2));
        }

        public Criteria andIdIsNull() {
            addCriterion("id is null");
            return (Criteria) this;
        }

        public Criteria andIdIsNotNull() {
            addCriterion("id is not null");
            return (Criteria) this;
        }

        public Criteria andIdEqualTo(Integer value) {
            addCriterion("id =", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdNotEqualTo(Integer value) {
            addCriterion("id <>", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdGreaterThan(Integer value) {
            addCriterion("id >", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("id >=", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdLessThan(Integer value) {
            addCriterion("id <", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdLessThanOrEqualTo(Integer value) {
            addCriterion("id <=", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdIn(List<Integer> values) {
            addCriterion("id in", values, "id");
            return (Criteria) this;
        }

        public Criteria andIdNotIn(List<Integer> values) {
            addCriterion("id not in", values, "id");
            return (Criteria) this;
        }

        public Criteria andIdBetween(Integer value1, Integer value2) {
            addCriterion("id between", value1, value2, "id");
            return (Criteria) this;
        }

        public Criteria andIdNotBetween(Integer value1, Integer value2) {
            addCriterion("id not between", value1, value2, "id");
            return (Criteria) this;
        }

        public Criteria andCreateTimeIsNull() {
            addCriterion("create_time is null");
            return (Criteria) this;
        }

        public Criteria andCreateTimeIsNotNull() {
            addCriterion("create_time is not null");
            return (Criteria) this;
        }

        public Criteria andCreateTimeEqualTo(Date value) {
            addCriterion("create_time =", value, "createTime");
            return (Criteria) this;
        }

        public Criteria andCreateTimeNotEqualTo(Date value) {
            addCriterion("create_time <>", value, "createTime");
            return (Criteria) this;
        }

        public Criteria andCreateTimeGreaterThan(Date value) {
            addCriterion("create_time >", value, "createTime");
            return (Criteria) this;
        }

        public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) {
            addCriterion("create_time >=", value, "createTime");
            return (Criteria) this;
        }

        public Criteria andCreateTimeLessThan(Date value) {
            addCriterion("create_time <", value, "createTime");
            return (Criteria) this;
        }

        public Criteria andCreateTimeLessThanOrEqualTo(Date value) {
            addCriterion("create_time <=", value, "createTime");
            return (Criteria) this;
        }

        public Criteria andCreateTimeIn(List<Date> values) {
            addCriterion("create_time in", values, "createTime");
            return (Criteria) this;
        }

        public Criteria andCreateTimeNotIn(List<Date> values) {
            addCriterion("create_time not in", values, "createTime");
            return (Criteria) this;
        }

        public Criteria andCreateTimeBetween(Date value1, Date value2) {
            addCriterion("create_time between", value1, value2, "createTime");
            return (Criteria) this;
        }

        public Criteria andCreateTimeNotBetween(Date value1, Date value2) {
            addCriterion("create_time not between", value1, value2, "createTime");
            return (Criteria) this;
        }

        public Criteria andUpdateTimeIsNull() {
            addCriterion("update_time is null");
            return (Criteria) this;
        }

        public Criteria andUpdateTimeIsNotNull() {
            addCriterion("update_time is not null");
            return (Criteria) this;
        }

        public Criteria andUpdateTimeEqualTo(Date value) {
            addCriterion("update_time =", value, "updateTime");
            return (Criteria) this;
        }

        public Criteria andUpdateTimeNotEqualTo(Date value) {
            addCriterion("update_time <>", value, "updateTime");
            return (Criteria) this;
        }

        public Criteria andUpdateTimeGreaterThan(Date value) {
            addCriterion("update_time >", value, "updateTime");
            return (Criteria) this;
        }

        public Criteria andUpdateTimeGreaterThanOrEqualTo(Date value) {
            addCriterion("update_time >=", value, "updateTime");
            return (Criteria) this;
        }

        public Criteria andUpdateTimeLessThan(Date value) {
            addCriterion("update_time <", value, "updateTime");
            return (Criteria) this;
        }

        public Criteria andUpdateTimeLessThanOrEqualTo(Date value) {
            addCriterion("update_time <=", value, "updateTime");
            return (Criteria) this;
        }

        public Criteria andUpdateTimeIn(List<Date> values) {
            addCriterion("update_time in", values, "updateTime");
            return (Criteria) this;
        }

        public Criteria andUpdateTimeNotIn(List<Date> values) {
            addCriterion("update_time not in", values, "updateTime");
            return (Criteria) this;
        }

        public Criteria andUpdateTimeBetween(Date value1, Date value2) {
            addCriterion("update_time between", value1, value2, "updateTime");
            return (Criteria) this;
        }

        public Criteria andUpdateTimeNotBetween(Date value1, Date value2) {
            addCriterion("update_time not between", value1, value2, "updateTime");
            return (Criteria) this;
        }

        public Criteria andAvailableIsNull() {
            addCriterion("available is null");
            return (Criteria) this;
        }

        public Criteria andAvailableIsNotNull() {
            addCriterion("available is not null");
            return (Criteria) this;
        }

        public Criteria andAvailableEqualTo(Boolean value) {
            addCriterion("available =", value, "available");
            return (Criteria) this;
        }

        public Criteria andAvailableNotEqualTo(Boolean value) {
            addCriterion("available <>", value, "available");
            return (Criteria) this;
        }

        public Criteria andAvailableGreaterThan(Boolean value) {
            addCriterion("available >", value, "available");
            return (Criteria) this;
        }

        public Criteria andAvailableGreaterThanOrEqualTo(Boolean value) {
            addCriterion("available >=", value, "available");
            return (Criteria) this;
        }

        public Criteria andAvailableLessThan(Boolean value) {
            addCriterion("available <", value, "available");
            return (Criteria) this;
        }

        public Criteria andAvailableLessThanOrEqualTo(Boolean value) {
            addCriterion("available <=", value, "available");
            return (Criteria) this;
        }

        public Criteria andAvailableIn(List<Boolean> values) {
            addCriterion("available in", values, "available");
            return (Criteria) this;
        }

        public Criteria andAvailableNotIn(List<Boolean> values) {
            addCriterion("available not in", values, "available");
            return (Criteria) this;
        }

        public Criteria andAvailableBetween(Boolean value1, Boolean value2) {
            addCriterion("available between", value1, value2, "available");
            return (Criteria) this;
        }

        public Criteria andAvailableNotBetween(Boolean value1, Boolean value2) {
            addCriterion("available not between", value1, value2, "available");
            return (Criteria) this;
        }

        public Criteria andUserIdIsNull() {
            addCriterion("user_id is null");
            return (Criteria) this;
        }

        public Criteria andUserIdIsNotNull() {
            addCriterion("user_id is not null");
            return (Criteria) this;
        }

        public Criteria andUserIdEqualTo(Integer value) {
            addCriterion("user_id =", value, "userId");
            return (Criteria) this;
        }

        public Criteria andUserIdNotEqualTo(Integer value) {
            addCriterion("user_id <>", value, "userId");
            return (Criteria) this;
        }

        public Criteria andUserIdGreaterThan(Integer value) {
            addCriterion("user_id >", value, "userId");
            return (Criteria) this;
        }

        public Criteria andUserIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("user_id >=", value, "userId");
            return (Criteria) this;
        }

        public Criteria andUserIdLessThan(Integer value) {
            addCriterion("user_id <", value, "userId");
            return (Criteria) this;
        }

        public Criteria andUserIdLessThanOrEqualTo(Integer value) {
            addCriterion("user_id <=", value, "userId");
            return (Criteria) this;
        }

        public Criteria andUserIdIn(List<Integer> values) {
            addCriterion("user_id in", values, "userId");
            return (Criteria) this;
        }

        public Criteria andUserIdNotIn(List<Integer> values) {
            addCriterion("user_id not in", values, "userId");
            return (Criteria) this;
        }

        public Criteria andUserIdBetween(Integer value1, Integer value2) {
            addCriterion("user_id between", value1, value2, "userId");
            return (Criteria) this;
        }

        public Criteria andUserIdNotBetween(Integer value1, Integer value2) {
            addCriterion("user_id not between", value1, value2, "userId");
            return (Criteria) this;
        }

        public Criteria andCourseIdIsNull() {
            addCriterion("course_id is null");
            return (Criteria) this;
        }

        public Criteria andCourseIdIsNotNull() {
            addCriterion("course_id is not null");
            return (Criteria) this;
        }

        public Criteria andCourseIdEqualTo(Integer value) {
            addCriterion("course_id =", value, "courseId");
            return (Criteria) this;
        }

        public Criteria andCourseIdNotEqualTo(Integer value) {
            addCriterion("course_id <>", value, "courseId");
            return (Criteria) this;
        }

        public Criteria andCourseIdGreaterThan(Integer value) {
            addCriterion("course_id >", value, "courseId");
            return (Criteria) this;
        }

        public Criteria andCourseIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("course_id >=", value, "courseId");
            return (Criteria) this;
        }

        public Criteria andCourseIdLessThan(Integer value) {
            addCriterion("course_id <", value, "courseId");
            return (Criteria) this;
        }

        public Criteria andCourseIdLessThanOrEqualTo(Integer value) {
            addCriterion("course_id <=", value, "courseId");
            return (Criteria) this;
        }

        public Criteria andCourseIdIn(List<Integer> values) {
            addCriterion("course_id in", values, "courseId");
            return (Criteria) this;
        }

        public Criteria andCourseIdNotIn(List<Integer> values) {
            addCriterion("course_id not in", values, "courseId");
            return (Criteria) this;
        }

        public Criteria andCourseIdBetween(Integer value1, Integer value2) {
            addCriterion("course_id between", value1, value2, "courseId");
            return (Criteria) this;
        }

        public Criteria andCourseIdNotBetween(Integer value1, Integer value2) {
            addCriterion("course_id not between", value1, value2, "courseId");
            return (Criteria) this;
        }

        public Criteria andFinalFeeIsNull() {
            addCriterion("final_fee is null");
            return (Criteria) this;
        }

        public Criteria andFinalFeeIsNotNull() {
            addCriterion("final_fee is not null");
            return (Criteria) this;
        }

        public Criteria andFinalFeeEqualTo(Integer value) {
            addCriterion("final_fee =", value, "finalFee");
            return (Criteria) this;
        }

        public Criteria andFinalFeeNotEqualTo(Integer value) {
            addCriterion("final_fee <>", value, "finalFee");
            return (Criteria) this;
        }

        public Criteria andFinalFeeGreaterThan(Integer value) {
            addCriterion("final_fee >", value, "finalFee");
            return (Criteria) this;
        }

        public Criteria andFinalFeeGreaterThanOrEqualTo(Integer value) {
            addCriterion("final_fee >=", value, "finalFee");
            return (Criteria) this;
        }

        public Criteria andFinalFeeLessThan(Integer value) {
            addCriterion("final_fee <", value, "finalFee");
            return (Criteria) this;
        }

        public Criteria andFinalFeeLessThanOrEqualTo(Integer value) {
            addCriterion("final_fee <=", value, "finalFee");
            return (Criteria) this;
        }

        public Criteria andFinalFeeIn(List<Integer> values) {
            addCriterion("final_fee in", values, "finalFee");
            return (Criteria) this;
        }

        public Criteria andFinalFeeNotIn(List<Integer> values) {
            addCriterion("final_fee not in", values, "finalFee");
            return (Criteria) this;
        }

        public Criteria andFinalFeeBetween(Integer value1, Integer value2) {
            addCriterion("final_fee between", value1, value2, "finalFee");
            return (Criteria) this;
        }

        public Criteria andFinalFeeNotBetween(Integer value1, Integer value2) {
            addCriterion("final_fee not between", value1, value2, "finalFee");
            return (Criteria) this;
        }

        public Criteria andCourseFeeIsNull() {
            addCriterion("course_fee is null");
            return (Criteria) this;
        }

        public Criteria andCourseFeeIsNotNull() {
            addCriterion("course_fee is not null");
            return (Criteria) this;
        }

        public Criteria andCourseFeeEqualTo(Integer value) {
            addCriterion("course_fee =", value, "courseFee");
            return (Criteria) this;
        }

        public Criteria andCourseFeeNotEqualTo(Integer value) {
            addCriterion("course_fee <>", value, "courseFee");
            return (Criteria) this;
        }

        public Criteria andCourseFeeGreaterThan(Integer value) {
            addCriterion("course_fee >", value, "courseFee");
            return (Criteria) this;
        }

        public Criteria andCourseFeeGreaterThanOrEqualTo(Integer value) {
            addCriterion("course_fee >=", value, "courseFee");
            return (Criteria) this;
        }

        public Criteria andCourseFeeLessThan(Integer value) {
            addCriterion("course_fee <", value, "courseFee");
            return (Criteria) this;
        }

        public Criteria andCourseFeeLessThanOrEqualTo(Integer value) {
            addCriterion("course_fee <=", value, "courseFee");
            return (Criteria) this;
        }

        public Criteria andCourseFeeIn(List<Integer> values) {
            addCriterion("course_fee in", values, "courseFee");
            return (Criteria) this;
        }

        public Criteria andCourseFeeNotIn(List<Integer> values) {
            addCriterion("course_fee not in", values, "courseFee");
            return (Criteria) this;
        }

        public Criteria andCourseFeeBetween(Integer value1, Integer value2) {
            addCriterion("course_fee between", value1, value2, "courseFee");
            return (Criteria) this;
        }

        public Criteria andCourseFeeNotBetween(Integer value1, Integer value2) {
            addCriterion("course_fee not between", value1, value2, "courseFee");
            return (Criteria) this;
        }

        public Criteria andVoucherFeeIsNull() {
            addCriterion("voucher_fee is null");
            return (Criteria) this;
        }

        public Criteria andVoucherFeeIsNotNull() {
            addCriterion("voucher_fee is not null");
            return (Criteria) this;
        }

        public Criteria andVoucherFeeEqualTo(Integer value) {
            addCriterion("voucher_fee =", value, "voucherFee");
            return (Criteria) this;
        }

        public Criteria andVoucherFeeNotEqualTo(Integer value) {
            addCriterion("voucher_fee <>", value, "voucherFee");
            return (Criteria) this;
        }

        public Criteria andVoucherFeeGreaterThan(Integer value) {
            addCriterion("voucher_fee >", value, "voucherFee");
            return (Criteria) this;
        }

        public Criteria andVoucherFeeGreaterThanOrEqualTo(Integer value) {
            addCriterion("voucher_fee >=", value, "voucherFee");
            return (Criteria) this;
        }

        public Criteria andVoucherFeeLessThan(Integer value) {
            addCriterion("voucher_fee <", value, "voucherFee");
            return (Criteria) this;
        }

        public Criteria andVoucherFeeLessThanOrEqualTo(Integer value) {
            addCriterion("voucher_fee <=", value, "voucherFee");
            return (Criteria) this;
        }

        public Criteria andVoucherFeeIn(List<Integer> values) {
            addCriterion("voucher_fee in", values, "voucherFee");
            return (Criteria) this;
        }

        public Criteria andVoucherFeeNotIn(List<Integer> values) {
            addCriterion("voucher_fee not in", values, "voucherFee");
            return (Criteria) this;
        }

        public Criteria andVoucherFeeBetween(Integer value1, Integer value2) {
            addCriterion("voucher_fee between", value1, value2, "voucherFee");
            return (Criteria) this;
        }

        public Criteria andVoucherFeeNotBetween(Integer value1, Integer value2) {
            addCriterion("voucher_fee not between", value1, value2, "voucherFee");
            return (Criteria) this;
        }

        public Criteria andUserVoucherIdIsNull() {
            addCriterion("user_voucher_id is null");
            return (Criteria) this;
        }

        public Criteria andUserVoucherIdIsNotNull() {
            addCriterion("user_voucher_id is not null");
            return (Criteria) this;
        }

        public Criteria andUserVoucherIdEqualTo(Integer value) {
            addCriterion("user_voucher_id =", value, "userVoucherId");
            return (Criteria) this;
        }

        public Criteria andUserVoucherIdNotEqualTo(Integer value) {
            addCriterion("user_voucher_id <>", value, "userVoucherId");
            return (Criteria) this;
        }

        public Criteria andUserVoucherIdGreaterThan(Integer value) {
            addCriterion("user_voucher_id >", value, "userVoucherId");
            return (Criteria) this;
        }

        public Criteria andUserVoucherIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("user_voucher_id >=", value, "userVoucherId");
            return (Criteria) this;
        }

        public Criteria andUserVoucherIdLessThan(Integer value) {
            addCriterion("user_voucher_id <", value, "userVoucherId");
            return (Criteria) this;
        }

        public Criteria andUserVoucherIdLessThanOrEqualTo(Integer value) {
            addCriterion("user_voucher_id <=", value, "userVoucherId");
            return (Criteria) this;
        }

        public Criteria andUserVoucherIdIn(List<Integer> values) {
            addCriterion("user_voucher_id in", values, "userVoucherId");
            return (Criteria) this;
        }

        public Criteria andUserVoucherIdNotIn(List<Integer> values) {
            addCriterion("user_voucher_id not in", values, "userVoucherId");
            return (Criteria) this;
        }

        public Criteria andUserVoucherIdBetween(Integer value1, Integer value2) {
            addCriterion("user_voucher_id between", value1, value2, "userVoucherId");
            return (Criteria) this;
        }

        public Criteria andUserVoucherIdNotBetween(Integer value1, Integer value2) {
            addCriterion("user_voucher_id not between", value1, value2, "userVoucherId");
            return (Criteria) this;
        }

        public Criteria andOutTradeNoIsNull() {
            addCriterion("out_trade_no is null");
            return (Criteria) this;
        }

        public Criteria andOutTradeNoIsNotNull() {
            addCriterion("out_trade_no is not null");
            return (Criteria) this;
        }

        public Criteria andOutTradeNoEqualTo(String value) {
            addCriterion("out_trade_no =", value, "outTradeNo");
            return (Criteria) this;
        }

        public Criteria andOutTradeNoNotEqualTo(String value) {
            addCriterion("out_trade_no <>", value, "outTradeNo");
            return (Criteria) this;
        }

        public Criteria andOutTradeNoGreaterThan(String value) {
            addCriterion("out_trade_no >", value, "outTradeNo");
            return (Criteria) this;
        }

        public Criteria andOutTradeNoGreaterThanOrEqualTo(String value) {
            addCriterion("out_trade_no >=", value, "outTradeNo");
            return (Criteria) this;
        }

        public Criteria andOutTradeNoLessThan(String value) {
            addCriterion("out_trade_no <", value, "outTradeNo");
            return (Criteria) this;
        }

        public Criteria andOutTradeNoLessThanOrEqualTo(String value) {
            addCriterion("out_trade_no <=", value, "outTradeNo");
            return (Criteria) this;
        }

        public Criteria andOutTradeNoLike(String value) {
            addCriterion("out_trade_no like", value, "outTradeNo");
            return (Criteria) this;
        }

        public Criteria andOutTradeNoNotLike(String value) {
            addCriterion("out_trade_no not like", value, "outTradeNo");
            return (Criteria) this;
        }

        public Criteria andOutTradeNoIn(List<String> values) {
            addCriterion("out_trade_no in", values, "outTradeNo");
            return (Criteria) this;
        }

        public Criteria andOutTradeNoNotIn(List<String> values) {
            addCriterion("out_trade_no not in", values, "outTradeNo");
            return (Criteria) this;
        }

        public Criteria andOutTradeNoBetween(String value1, String value2) {
            addCriterion("out_trade_no between", value1, value2, "outTradeNo");
            return (Criteria) this;
        }

        public Criteria andOutTradeNoNotBetween(String value1, String value2) {
            addCriterion("out_trade_no not between", value1, value2, "outTradeNo");
            return (Criteria) this;
        }

        public Criteria andPayStateIsNull() {
            addCriterion("pay_state is null");
            return (Criteria) this;
        }

        public Criteria andPayStateIsNotNull() {
            addCriterion("pay_state is not null");
            return (Criteria) this;
        }

        public Criteria andPayStateEqualTo(Integer value) {
            addCriterion("pay_state =", value, "payState");
            return (Criteria) this;
        }

        public Criteria andPayStateNotEqualTo(Integer value) {
            addCriterion("pay_state <>", value, "payState");
            return (Criteria) this;
        }

        public Criteria andPayStateGreaterThan(Integer value) {
            addCriterion("pay_state >", value, "payState");
            return (Criteria) this;
        }

        public Criteria andPayStateGreaterThanOrEqualTo(Integer value) {
            addCriterion("pay_state >=", value, "payState");
            return (Criteria) this;
        }

        public Criteria andPayStateLessThan(Integer value) {
            addCriterion("pay_state <", value, "payState");
            return (Criteria) this;
        }

        public Criteria andPayStateLessThanOrEqualTo(Integer value) {
            addCriterion("pay_state <=", value, "payState");
            return (Criteria) this;
        }

        public Criteria andPayStateIn(List<Integer> values) {
            addCriterion("pay_state in", values, "payState");
            return (Criteria) this;
        }

        public Criteria andPayStateNotIn(List<Integer> values) {
            addCriterion("pay_state not in", values, "payState");
            return (Criteria) this;
        }

        public Criteria andPayStateBetween(Integer value1, Integer value2) {
            addCriterion("pay_state between", value1, value2, "payState");
            return (Criteria) this;
        }

        public Criteria andPayStateNotBetween(Integer value1, Integer value2) {
            addCriterion("pay_state not between", value1, value2, "payState");
            return (Criteria) this;
        }

        public Criteria andSpbillCreateIpIsNull() {
            addCriterion("spbill_create_ip is null");
            return (Criteria) this;
        }

        public Criteria andSpbillCreateIpIsNotNull() {
            addCriterion("spbill_create_ip is not null");
            return (Criteria) this;
        }

        public Criteria andSpbillCreateIpEqualTo(String value) {
            addCriterion("spbill_create_ip =", value, "spbillCreateIp");
            return (Criteria) this;
        }

        public Criteria andSpbillCreateIpNotEqualTo(String value) {
            addCriterion("spbill_create_ip <>", value, "spbillCreateIp");
            return (Criteria) this;
        }

        public Criteria andSpbillCreateIpGreaterThan(String value) {
            addCriterion("spbill_create_ip >", value, "spbillCreateIp");
            return (Criteria) this;
        }

        public Criteria andSpbillCreateIpGreaterThanOrEqualTo(String value) {
            addCriterion("spbill_create_ip >=", value, "spbillCreateIp");
            return (Criteria) this;
        }

        public Criteria andSpbillCreateIpLessThan(String value) {
            addCriterion("spbill_create_ip <", value, "spbillCreateIp");
            return (Criteria) this;
        }

        public Criteria andSpbillCreateIpLessThanOrEqualTo(String value) {
            addCriterion("spbill_create_ip <=", value, "spbillCreateIp");
            return (Criteria) this;
        }

        public Criteria andSpbillCreateIpLike(String value) {
            addCriterion("spbill_create_ip like", value, "spbillCreateIp");
            return (Criteria) this;
        }

        public Criteria andSpbillCreateIpNotLike(String value) {
            addCriterion("spbill_create_ip not like", value, "spbillCreateIp");
            return (Criteria) this;
        }

        public Criteria andSpbillCreateIpIn(List<String> values) {
            addCriterion("spbill_create_ip in", values, "spbillCreateIp");
            return (Criteria) this;
        }

        public Criteria andSpbillCreateIpNotIn(List<String> values) {
            addCriterion("spbill_create_ip not in", values, "spbillCreateIp");
            return (Criteria) this;
        }

        public Criteria andSpbillCreateIpBetween(String value1, String value2) {
            addCriterion("spbill_create_ip between", value1, value2, "spbillCreateIp");
            return (Criteria) this;
        }

        public Criteria andSpbillCreateIpNotBetween(String value1, String value2) {
            addCriterion("spbill_create_ip not between", value1, value2, "spbillCreateIp");
            return (Criteria) this;
        }

        public Criteria andUserCourseIdIsNull() {
            addCriterion("user_course_id is null");
            return (Criteria) this;
        }

        public Criteria andUserCourseIdIsNotNull() {
            addCriterion("user_course_id is not null");
            return (Criteria) this;
        }

        public Criteria andUserCourseIdEqualTo(Integer value) {
            addCriterion("user_course_id =", value, "userCourseId");
            return (Criteria) this;
        }

        public Criteria andUserCourseIdNotEqualTo(Integer value) {
            addCriterion("user_course_id <>", value, "userCourseId");
            return (Criteria) this;
        }

        public Criteria andUserCourseIdGreaterThan(Integer value) {
            addCriterion("user_course_id >", value, "userCourseId");
            return (Criteria) this;
        }

        public Criteria andUserCourseIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("user_course_id >=", value, "userCourseId");
            return (Criteria) this;
        }

        public Criteria andUserCourseIdLessThan(Integer value) {
            addCriterion("user_course_id <", value, "userCourseId");
            return (Criteria) this;
        }

        public Criteria andUserCourseIdLessThanOrEqualTo(Integer value) {
            addCriterion("user_course_id <=", value, "userCourseId");
            return (Criteria) this;
        }

        public Criteria andUserCourseIdIn(List<Integer> values) {
            addCriterion("user_course_id in", values, "userCourseId");
            return (Criteria) this;
        }

        public Criteria andUserCourseIdNotIn(List<Integer> values) {
            addCriterion("user_course_id not in", values, "userCourseId");
            return (Criteria) this;
        }

        public Criteria andUserCourseIdBetween(Integer value1, Integer value2) {
            addCriterion("user_course_id between", value1, value2, "userCourseId");
            return (Criteria) this;
        }

        public Criteria andUserCourseIdNotBetween(Integer value1, Integer value2) {
            addCriterion("user_course_id not between", value1, value2, "userCourseId");
            return (Criteria) this;
        }

        public Criteria andNormalIsNull() {
            addCriterion("normal is null");
            return (Criteria) this;
        }

        public Criteria andNormalIsNotNull() {
            addCriterion("normal is not null");
            return (Criteria) this;
        }

        public Criteria andNormalEqualTo(Boolean value) {
            addCriterion("normal =", value, "normal");
            return (Criteria) this;
        }

        public Criteria andNormalNotEqualTo(Boolean value) {
            addCriterion("normal <>", value, "normal");
            return (Criteria) this;
        }

        public Criteria andNormalGreaterThan(Boolean value) {
            addCriterion("normal >", value, "normal");
            return (Criteria) this;
        }

        public Criteria andNormalGreaterThanOrEqualTo(Boolean value) {
            addCriterion("normal >=", value, "normal");
            return (Criteria) this;
        }

        public Criteria andNormalLessThan(Boolean value) {
            addCriterion("normal <", value, "normal");
            return (Criteria) this;
        }

        public Criteria andNormalLessThanOrEqualTo(Boolean value) {
            addCriterion("normal <=", value, "normal");
            return (Criteria) this;
        }

        public Criteria andNormalIn(List<Boolean> values) {
            addCriterion("normal in", values, "normal");
            return (Criteria) this;
        }

        public Criteria andNormalNotIn(List<Boolean> values) {
            addCriterion("normal not in", values, "normal");
            return (Criteria) this;
        }

        public Criteria andNormalBetween(Boolean value1, Boolean value2) {
            addCriterion("normal between", value1, value2, "normal");
            return (Criteria) this;
        }

        public Criteria andNormalNotBetween(Boolean value1, Boolean value2) {
            addCriterion("normal not between", value1, value2, "normal");
            return (Criteria) this;
        }

        public Criteria andAbnormalActualFeeIsNull() {
            addCriterion("abnormal_actual_fee is null");
            return (Criteria) this;
        }

        public Criteria andAbnormalActualFeeIsNotNull() {
            addCriterion("abnormal_actual_fee is not null");
            return (Criteria) this;
        }

        public Criteria andAbnormalActualFeeEqualTo(Integer value) {
            addCriterion("abnormal_actual_fee =", value, "abnormalActualFee");
            return (Criteria) this;
        }

        public Criteria andAbnormalActualFeeNotEqualTo(Integer value) {
            addCriterion("abnormal_actual_fee <>", value, "abnormalActualFee");
            return (Criteria) this;
        }

        public Criteria andAbnormalActualFeeGreaterThan(Integer value) {
            addCriterion("abnormal_actual_fee >", value, "abnormalActualFee");
            return (Criteria) this;
        }

        public Criteria andAbnormalActualFeeGreaterThanOrEqualTo(Integer value) {
            addCriterion("abnormal_actual_fee >=", value, "abnormalActualFee");
            return (Criteria) this;
        }

        public Criteria andAbnormalActualFeeLessThan(Integer value) {
            addCriterion("abnormal_actual_fee <", value, "abnormalActualFee");
            return (Criteria) this;
        }

        public Criteria andAbnormalActualFeeLessThanOrEqualTo(Integer value) {
            addCriterion("abnormal_actual_fee <=", value, "abnormalActualFee");
            return (Criteria) this;
        }

        public Criteria andAbnormalActualFeeIn(List<Integer> values) {
            addCriterion("abnormal_actual_fee in", values, "abnormalActualFee");
            return (Criteria) this;
        }

        public Criteria andAbnormalActualFeeNotIn(List<Integer> values) {
            addCriterion("abnormal_actual_fee not in", values, "abnormalActualFee");
            return (Criteria) this;
        }

        public Criteria andAbnormalActualFeeBetween(Integer value1, Integer value2) {
            addCriterion("abnormal_actual_fee between", value1, value2, "abnormalActualFee");
            return (Criteria) this;
        }

        public Criteria andAbnormalActualFeeNotBetween(Integer value1, Integer value2) {
            addCriterion("abnormal_actual_fee not between", value1, value2, "abnormalActualFee");
            return (Criteria) this;
        }
    }

    public static class Criteria extends GeneratedCriteria {

        protected Criteria() {
            super();
        }
    }

    public static class Criterion {
        private String condition;

        private Object value;

        private Object secondValue;

        private boolean noValue;

        private boolean singleValue;

        private boolean betweenValue;

        private boolean listValue;

        private String typeHandler;

        public String getCondition() {
            return condition;
        }

        public Object getValue() {
            return value;
        }

        public Object getSecondValue() {
            return secondValue;
        }

        public boolean isNoValue() {
            return noValue;
        }

        public boolean isSingleValue() {
            return singleValue;
        }

        public boolean isBetweenValue() {
            return betweenValue;
        }

        public boolean isListValue() {
            return listValue;
        }

        public String getTypeHandler() {
            return typeHandler;
        }

        protected Criterion(String condition) {
            super();
            this.condition = condition;
            this.typeHandler = null;
            this.noValue = true;
        }

        protected Criterion(String condition, Object value, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.typeHandler = typeHandler;
            if (value instanceof List<?>) {
                this.listValue = true;
            } else {
                this.singleValue = true;
            }
        }

        protected Criterion(String condition, Object value) {
            this(condition, value, null);
        }

        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.secondValue = secondValue;
            this.typeHandler = typeHandler;
            this.betweenValue = true;
        }

        protected Criterion(String condition, Object value, Object secondValue) {
            this(condition, value, secondValue, null);
        }
    }
}